package bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.*;

@Entity
@Table(name = "OrdenesCompra")
public class OrdenCompraVO implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private List<ItemOrdenCompraVO> items = new ArrayList<ItemOrdenCompraVO>();
	private int nroOrdenCompra;
	private ProveedorVO proveedor;
	private Date fecha;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int getNroOrdenCompra() {
		return nroOrdenCompra;
	}

	public void setNroOrdenCompra(int nroOrdenCompra) {
		this.nroOrdenCompra = nroOrdenCompra;
	}

	@ManyToOne//(cascade = CascadeType.ALL)
	@JoinColumn(name = "cuitProveedor")
	public ProveedorVO getProveedor() {
		return proveedor;
	}

	public void setProveedor(ProveedorVO proveedor) {
		this.proveedor = proveedor;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "nroOrdenCompra")
	public List<ItemOrdenCompraVO> getItems() {
		return items;
	}

	public void setItems(List<ItemOrdenCompraVO> items) {
		this.items = items;
	}

	public void agregarItem(RodamientoVO rodamiento, int cant) {

	}
	
	public List<ViewItemOC> itemsToView(){
		int nro = 0;
		List<ViewItemOC> itemsView = new ArrayList<ViewItemOC>();
		for(ItemOrdenCompraVO iVO : items ){
			nro ++;
			iVO.setIdItemOrdenCompra(nro);
			itemsView.add(iVO.toView());
		}
		return itemsView;
	}
	
	public ViewOrdenCompra toView(){
		ViewOrdenCompra v = new ViewOrdenCompra();
		v.setNroOrdenCompra(this.nroOrdenCompra);
		v.setFecha(this.fecha);
		v.setCuitProveedor(this.proveedor.getCuit());
		v.setRazonSaocial(this.proveedor.getRazonSocial());
		v.setItems(this.itemsToView());
	return v;		
	}
	

}